<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <!-- 统计同质子字符串的数目 -->
    <script>
      function countHomogenous(s) {
        // target重复元素
        let target = s[0]
        // count重复元素出现次数
        let count = 1
        // res目前总数
        let res = 0
        let length = s.length
        for (let i = 1; i < length; i++) {
          // 与当前的target重复，则次数累加
          if (target == s[i]) {
            count++
          } else {
            // 不重复 则计算重复元素的个数累加到res
            res += ((count + 1) * count) / 2
            count = 1 // 重置次数
            target = s[i] // 修改新的一个重复元素
          }
        }
        // 最后一次进行累加  因为循环内部没有对最后出现的重复元素的次数进行计算
        res += (((count + 1) * count) / 2) % 1000000007
        return res
      }
      console.log(countHomogenous('abbcccaa'))
    </script>
  </body>
</html>
